package main

import (
	"strings"
)

func main() {

}

//#link: https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/
func toHex(num int) string {
	//一位十六进制数对应四位二进制数，因此 32 位有符号整数的十六进制数有 8 位。将 num 的二进制数按照四位一组分成 8 组
	if num == 0 {
		return "0"
	}
	sb := &strings.Builder{}
	//8组二进制数组成
	for i := 7; i >= 0; i-- {
		val := num >> uint(4*i) & 0xf
		if val > 0 || sb.Len() > 0 {
			var digit byte
			if val < 10 {
				digit = '0' + byte(val)
			} else {
				digit = 'a' + byte(val-10)
			}
			sb.WriteByte(digit)
		}
	}
	return sb.String()
}
